# -*- coding:utf-8
# 5357. 设计一个支持增量操作的栈 显示英文描述
# 用户通过次数460
# 用户尝试次数488
# 通过次数461
# 提交次数522
# 题目难度Medium
# 请你设计一个支持下述操作的栈。
#
# 实现自定义栈类 CustomStack ：
#
# CustomStack(int maxSize)：用 maxSize 初始化对象，maxSize 是栈中最多能容纳的元素数量，栈在增长到 maxSize 之后则不支持 push 操作。
# void push(int x)：如果栈还未增长到 maxSize ，就将 x 添加到栈顶。
# int pop()：返回栈顶的值，或栈为空时返回 -1 。
# void inc(int k, int val)：栈底的 k 个元素的值都增加 val 。如果栈中元素总数小于 k ，则栈中的所有元素都增加 val 。

class CustomStack:

    def __init__(self, maxSize: int):
        self._maxxx = maxSize
        self._lis = []


    def push(self, x: int) -> None:
        if self._lis.__len__()<self._maxxx:
            self._lis.append(x)
        print(self._lis)

    def pop(self) -> int:
        if self._lis.__len__() ==0:
            return -1
        res = self._lis.pop()
        return res


    def increment(self, k: int, val: int) -> None:
        for idx in range(min(k,self._lis.__len__())):
            self._lis[idx]+= val
        print(self._lis)


#
# lis = [1,2,3]
# lis[2]+=100
# print(lis)
# lis.pop()
# print(lis)
customStack = CustomStack(3)
customStack.push(1);
customStack.push(2);
customStack.pop();
customStack.push(2);
customStack.push(3);
customStack.push(4);
customStack.increment(5, 100);
customStack.increment(2, 100);
customStack.pop();
customStack.pop();
customStack.pop();
customStack.pop();